Recibo el error "TypeError no detectado: error al invocar scripting.executeScript (scripting. ScriptInjection injection, función de devolución de llamada opcional): no hay firma coincidente". en mi consola. No tengo idea de lo que está mal, alguien por favor ayúdeme, realmente lo aprecio.
Aquí está el código background.js:
var Tabclicked = false; disableBrowserAction(); function disableBrowserAction(tabId) { chrome.scripting.executeScript(tabId, { file: 'jquery.js' }, function() { chrome.scripting.executeScript(tabId, { file: 'CloseRuler.js' }); }); } function enableBrowserAction(tabId) { chrome.scripting.executeScript(tabId, { file: 'jquery.js' }, function() { chrome.scripting.executeScript(tabId, { files: 'Ruler.js' }); }); } function updateState() { if (Tabclicked == false) { Tabclicked = true; enableBrowserAction(); } else { Tabclicked = false; disableBrowserAction(); } } //chrome.pageAction.onClicked.addListener(updateState); chrome.action.onClicked.addListener(function(tabId) { updateState(tabId); alert('File test alert'); }); alert('File test alert');Aquí está mi manifiesto:
{ "name": "Physics Ruler", "description": "Position the ruler and measure the objects!", "version": "1.0", "manifest_version": 3, "permissions": [ "activeTab", "scripting" ], "background": { "service_worker": "background.js", "type": "module" }, "action": { "default_icon": "icon.png", "default_title": "Ruler", "name": "Physics Ruler" }, "content_scripts": [{ "js": ["jquery.js"], "matches": ["*://*/*"] }], "host_permissions": [ "*://*/*" ] }Entonces, encontré la respuesta, y la documentación no fue de ayuda completa, solo intenté diferentes cosas hasta que funcionó.
Tenemos que hacer esta función con pestañas cromadas:
chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) {en esa función, podemos usar "tabs[0].id" para obtener la identificación.
por ejemplo:
function enableBrowserAction(tabId) { chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) { chrome.scripting.executeScript({ target: { tabId: tabs[0].id }, files: ['jquery.js'] }, function() { chrome.scripting.executeScript({ target: { tabId: tabs[0].id }, files: ['Ruler.js'] }); }); });}